package org.example.scoresystem_backen.dto;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.math.BigDecimal;

/**
 * 课程选项DTO
 * 用于下拉选择框的课程数据
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CourseOptionDTO {

    /**
     * 课程ID
     */
    private Integer id;

    /**
     * 课程代码
     */
    private String code;

    /**
     * 课程名称
     */
    private String name;

    /**
     * 学分
     */
    private BigDecimal credits;

    /**
     * 课程描述
     */
    private String description;

    /**
     * 获取显示标签（课程代码-课程名称）
     * @return 显示标签
     */
    public String getLabel() {
        if (code != null && name != null) {
            return code + "-" + name;
        }
        return name;
    }

    /**
     * 获取显示值（课程ID）
     * @return 显示值
     */
    public Integer getValue() {
        return id;
    }

    /**
     * 获取带学分信息的完整标签
     * @return 带学分信息的完整标签
     */
    public String getFullLabel() {
        String baseLabel = getLabel();
        if (credits != null) {
            return baseLabel + "(" + credits + "学分)";
        }
        return baseLabel;
    }

    /**
     * 获取简短描述
     * @return 简短描述
     */
    public String getShortDescription() {
        if (description != null && description.length() > 50) {
            return description.substring(0, 50) + "...";
        }
        return description;
    }
}
